perm filename DRIVE.FAI[SYS,HE]6 blob sn#074156 filedate 1973-11-29 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00007 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002		TITLE DRIVE
 00004 00003	DOIT:	MOVE 1,-1(17)
 00005 00004	PACK:	(INTEGER PTR,TIMEREFERENCE REAL SOLN)
 00007 00005	ACT:	HRLI MASTER
 00008 00006		THIS IS THE 32 WORD MAIL MESSAGE
 00009 00007	ISSERV:	0
 00011 ENDMK
⊗;
	TITLE DRIVE
	INTERNAL DOIT,ARMPOS,ARM.JOINT,PACK,PSTRING
	INTERNAL HANDFN,ARMFN,ARMPROCEED
	EXTERNAL ARM.VECTOR,ARM.MOTION,ARM.STATUS,ARM.SEG
	EXTERNAL ARM.WAIT,FELT,STOP.ON,WAIT.STRING
	EXTERNAL JOBAPR,UNDERF
	EXTERNAL ARM.MESSAGE,JOBSA

	P←17
	MASTER←←16661
	RELOC←←40
	TOUCH←←10
	HOLD←←20
ARM.JOINT:MOVEI 
	SKIPA
ARMPOS:	MOVEI 1
ONCE:	HRRZ 1,JOBSA
	HRRM 1,RSTSR
	MOVE 1,ARM.VECTOR
	MOVEM 1,THETA
	MOVE 1,WAIT.STRING
	MOVEM 1,ETOR
	MOVE 1,FELT
	MOVEM 1,NERVES
	CALLI 1,30
	HRRM 1,SEGJOB
	CALLI 1,400021
	HRLM 1,SEGJOB
	MOVEI 1,ARM.STATUS
	MOVEM 1,STATUS
	MOVEI 1,ARM.SEG
	MOVEM 1,SEGMENT
	MOVEI 1,ARM.MOTION
	HRRM 1,NAME
	MOVEI 1,ARM.WAIT
	HRLM 1,NAME
	HRRZ 1,SEGJOB
	CALLI 1,24
	MOVE 3,[POINT 6,0,35]
	MOVE 4,[POINT 7,MYPPN-1,35]
	MOVEI 7,1
I5:	MOVEI 5,2
C7:	ILDB 6,3
	ADDI 6,40
	CAIE 6,40
	IDPB 6,4
	SOJGE 5,C7
	SOJGE 7,[MOVEI 6,"/"
		IDPB 6,4
		JRST I5]

	MOVEI 6,15
	IDPB 6,4
	MOVEI 6,12
	IDPB 6,4
	MOVE 1,[JRST ACTIT]
	MOVEM 1,ONCE
ACTIT:	MOVEI 1,RSTS
	HRRM 1,JOBSA
	JRST ACT

REQU:	0
	EXE
MYPPN:	0
	0


DOIT:	MOVE 1,-1(17)
	MOVEM 1,FILE
	MOVEM 1,ARM.WAIT
	MOVE 1,-2(17)
	HRRZM 1,BAND
	MOVEI 2
	MOVE 1,-3(P)
	JUMPN 1,.+2
	CALLI 1,400071
	MOVEM 1,PPPN
SEN1:	PUSHJ P,ACT
RETM:	SUB 17,[XWD 4,4]
	JRST @4(17)

ARMFN:	MOVEI 3+HOLD+RELOC
	HRL 1,ARM.ME
	HRRI 1,ARGS
	BLT 1,ARGS+24
	MOVE 1,-1(17)
	DPB 1,[POINT 9,0,26]
	PUSHJ P,ACT
	SUB P,[XWD 2,2]
	JRST @2(P)

HANDFN:	MOVEI 3+HOLD
	MOVE 1,ARM.ME
	MOVE 1,(1)
	MOVEM 1,ARGS
	JRST ACT

ARMPRO:	MOVE 1,-1(P)
	MOVEM 1,ARGS
	MOVEI 3
	PUSHJ P,ACT
	SUB P,[XWD 2,2]
	JRST @2(P)
PACK:	;(INTEGER PTR,TIME;REFERENCE REAL SOLN);
	MOVE 10,-3(P)
	MOVE 1,-2(P)
	MOVEM 1,(10)	;TIME
	HRLZ 5,-1(P)
	BLT 5,4		;PICK UP A0-A4
	MOVM 6,4	;WHERE THE LARGEST WILL END UP
	MOVEI 5,3
L1:	MOVM 7,(5)
	CAMGE 6,7
	MOVE 6,7
	SOJGE 5,L1
	TDZ 6,[XWD 777,777777]	;THE LARGEST IS NOW IN 6
	ADD 6,[XWD  12000,0]	;THE EXPONENT TO PUT FRACTION AND SIGN INTO RT. HALF
	HLLM 6,-1(10)
	UFA 6,4
	HRLM 7,-3(10)
	UFA 6,3
	HRRM 7,-3(10)
	UFA 6,2
	HRLM 7,-2(10)
	UFA 6,1
	HRRM 7,-2(10)
	UFA 6,0
	HRRM 7,-1(10)
	SUB P,[XWD 4,4]
	JRST @4(P)

PSTRING:	;(PTR,S)
	MOVE 1,[POINT 7,0,35]
	HRR 1,-1(P)	;POINTS TO LOC IN COEFF
	POP 16,3	;COUNT
	POP 16,2	;STRING POINTER
	HRLI 2,0	;CLEAR LH OF COUNT
	JUMPE 2,[
		SETZ 1,
		JRST PLB]
PL:	ILDB 4,3
	IDPB 4,1
	SOJG 2,PL
	MOVEI 4,0
	IDPB 4,1
	HRLI 1,0	;LAST WORD
	HRRZ 2,-1(P)	;FIRST WORD
	SUBI 1,(2)
PLB:	HRRZ 2,-1(P)
	MOVEM 1,(2)	;WORD COUNT
	SUB P,[XWD 2,2]
	JRST @2(P)


ACT:	HRLI MASTER
	SETZM ARM.STATUS
	SKIPE STOP.ON
	TRO TOUCH
	MOVEM EXE
	MOVE 1,ARM.WAIT
	MOVEM 1,ARM.MOTION
	SETZM ARM.WAIT
	CALL 1,[SIXBIT/INTENS/]
	MOVEM 1,ENBSAV#
	SETZ 1,
	CALL 1,[SIXBIT/INTENB/]		;TURN OFF INTERRUPTS
	MOVE 1,JOBAPR
	MOVEM 1,APRSAV#
	MOVEI 1,[CALL[SIXBIT/DISMIS/]]
	MOVEM 1,JOBAPR
	JSR ISSERV
	SEND REQU
	JRST[		MOVEI 1,2
			CALLI 1,31
			JRST .-1]
	HRLZI 1,40
	CALL 1,[SIXBIT/IENBW/]
	MOVE 1,APRSAV
	MOVEM 1,JOBAPR
	MOVE 1,ENBSAV
	CALL 1,[SIXBIT/INTENB/]
	SKIPE @WAIT.STRING
	OUTSTR @WAIT.STRING
	POPJ P,

;	THIS IS THE 32 WORD MAIL MESSAGE

EXE:	XWD MASTER,0	;18-27 NARGS, 30 RELOC, 31 HOLD, 32 SOTCH, 33-35 EXE
			;0 READ IN OCTAL
			;1 READ IN DECIMAL
			;2 EXECUTE FILE
			;3 EXECUTE FUNCTION
FILE:	0
PPPN:	0
BAND:	0
SEGJOB:	0
NAME:	0
STATUS:	0
SEGMENT:0
NERVES:	0
ETOR:	0
THETA:	0
ARGS:	BLOCK =6
STRING:	BLOCK =15

ISSERV:	0
SEE:	SKIPN 1,REQU
	JRST[	PTYGET 10
		JRST[	OUTSTR[ASCIZ/NO PTYS AVAILABLE
/]
			CALLI 12]
		HRLI 10,0
		MOVEM 10,PTYLIN#
	GJ:	MOVEI 11,[ASCIZ/L
/]
		PTWRS7 10
	WH:	PTRD1W 10
		CAIE 11,"#"
		JRST[	CAIE 11,"?"
			JRST WH
			OUTSTR[ASCIZ\NO JOB FOR SERVO
TYPE C/R TO TRY AGAIN
\]
			INCHWL
			INCHWL
			JRST GJ]
		MOVEI 11,MYPPN
		PTWRS7 10
	WCC:	PTRD1W 10
		CAIE 11,"↑"
		JRST WCC
	SPJ:	SETZ 1,
		MOVEI 11,[ASCIZ/PJ
/]
		PTWRS7 10
	WJN:	PTRD1W 10
		CAIGE 11,72
		CAIG 11,60
		JRST ET
		JRST[	SUBI 11,60
			IMULI 1,12
			ADD 1,11
			JRST WJN]
	ET:	JUMPE 1,WJN
		CAIE 11,12
		JRST WJN
		MOVEM 1,REQU
		MOVEI 11,[ASCIZ/RU YELO[SYS,HE]
/]
		PTWRS7 10
	WCC2:	PTRD1W 10
		CAIE 11,"!"
		JRST WCC2
		JRST @ISSERV]
GOTONE:	JRST @ISSERV

RSTS:	SKIPE PTYLIN
	SETZM REQU
RSTSR:	JRST .
	END